"""
@FileName：8判断点和圆的位置关系.py
@Author：lmz
@Time：2021/5/19 22:26
设计一个圆类和一个点类：
点有两个实例属性，x坐标，y坐标
圆有一个实例属性：半径r；两个类属性:圆心x坐标，圆心y坐标；

给出圆的中心位置，再给出一个半径的范围，用户输入一个自选点的x，y坐标；
程序后台随机生成两个值为半径（在给出的半径范围内），判断这个自选点的位置：
如果它在随机生成的两个圆中间，就得两分；如果在给出的两个半径范围外，得零分，否则得一分，最后打印输出分数。
"""
import math


class Pointer(object):
    def __init__(self, x: float, y: float):
        self.x = x
        self.y = y


class Circle(object):
    def __init__(self, cp: Pointer, r: float):
        self.cp = cp
        self.r = r

    def c_area(self):
        print(math.pi * (self.r ** 2))

    def c_long(self):
        print(2 * math.pi * self.r)

    def p_relationship(self, point: Pointer):
        if abs(point.x - self.cp.x) ** 2 + abs(point.y - self.cp.y) ** 2 == self.r ** 2:
            print('该点在圆上')
        elif abs(point.x - self.cp.x) ** 2 + abs(point.y - self.cp.y) ** 2 < self.r ** 2:
            print('该点在圆内')
        elif abs(point.x - self.cp.x) ** 2 + abs(point.y - self.cp.y) ** 2 > self.r ** 2:
            print('该点在圆外')
cp=Pointer(2,3)
circle=Circle(cp,5)
circle.c_area()
circle.c_long()
p1=Pointer(3,4)
p2=Pointer(1,2)
circle.p_relationship(p1)
circle.p_relationship(p2)

